package com.banmao.algorithm.No1To100.No6_ZigZag_Conversion;

/**
 *  暴力破解
 *
 *  通过创建行数个StringBuilder数组，依次将字符串中的字符一个一个存入数组中
 *  比如：字符串”ABCDEFG“，行数是3
 *      生成一个StringBuilder数组，容量为3。
 *      先将A存入第一个数组的第一个位置中，
 *      然后B存入第二个数组的第一个位置中，
 *      C存入第三个数组的第一个位置中，
 *      之后，通过flag标签，反向进行，
 *      将D存入第二个数组的第二个位置中，通过append()方法可以直接添加到数组末尾
 *      如此反复知道字符串全部存完为止。
 *      最后，将三个数组拼接到一起，然后返回toString()方法。
 *
 */
class Solution01 {
    static String convert(String s, int numRows) {
        if(s==null || numRows==1) {
            return s;
        }
        StringBuilder[] row = new StringBuilder[numRows];

        for(int i=0; i<row.length; i++) {
            row[i] = new StringBuilder();
        }
        int rowIndex = 0;
        int flag = 1;
        for(int i=0; i<s.length(); i++) {
            row[rowIndex].append(s.charAt(i));
            rowIndex += flag;
            if(rowIndex == numRows-1) {
                flag = -1;
            } else if (rowIndex == 0) {
                flag = 1;
            }
        }
        StringBuilder list = new StringBuilder(s.length());
        for (StringBuilder stringBuilder : row) {
            list.append(stringBuilder);
        }
        return list.toString();
    }
}
